Шрифт:
Интервал:
Закладка:
Во-первых, пакет scene.shape обеспечивает создание Node-узлов графа сцены, отображающих простые геометрические формы: дуга, окружность, эллипс, кривые, линия, многоугольник, ломаная линия, прямоугольник, а также текст.
Далее пакет scene.image с помощью класса ImageView обеспечивает отображение существующего изображения, загружаемого с помощью класса Image.
Кроме того, данный пакет предоставляет класс WritableImage, который позволяет создавать изображение из набора пикселей с последующим отображением в узле графа сцены ImageView.
И пакет scene.canvas обеспечивает создание узла графа сцены Canvas с последующим рисованием в нем простых геометрических форм, заполнение Canvas-узла изображением и текстом.
Если сравнивать JavaFX 2D графику с 2D графикой библиотек AWT/Swing, можно сказать, что, если не вдаваться в детали различающихся моделей программирования, JavaFX 2D графика обеспечивает ту же функциональность, что и AWT/Swing 2D графика, упрощая добавление к объектам 2D графики визуальных эффектов, трансформаций и анимации.
Надо также отметить, что в отличие от AWT/Swing, JavaFX предоставляет для использования готовые 2D примитивы в виде узлов графа сцены, в то время как в AWT/Swing их нужно рисовать.
Отображение 3D графики в JavaFX-приложениях возможно двумя способами.
Первый способ – это создание 2D объекта графа сцены и применение к нему 3D трансформаций.
Второй способ – использование классов Box, Cylinder, MeshView, Sphere пакета scene.shape, представляющих готовые Shape3D графические примитивы куб, цилиндр, поверхность и сфера.
При этом узлы Shape3D графа сцены имеют такие свойства как материал, режим рисования и отображение внутренних поверхностей.
Также к узлам Shape3D графа сцены могут применяться такие эффекты как камера, освещение, трансформации и анимация.
Если сравнивать JavaFX 3D графику с 3D графикой библиотеки Java 3D, можно сказать, что, если не вдаваться в детали различающихся моделей программирования, JavaFX 3D графика обеспечивает ту же функциональность, что и Java 3D графика, за исключением использования класса Canvas3D библиотеки Java 3D, позволяющего 3D рисование.
Теперь перечислим основные возможности JavaFX.
JavaFX предоставляет программный интерфейс JavaFX API для создания на языке Java JavaFX-приложений с богатым GUI-интерфейсом, 2D/3D графикой, анимацией и аудио-видео контентом.
JavaFX интегрирована с JRE/JDK.
JavaFX имеет альтернативное декларативное XML-описание GUI-интерфейса на языке FXML.
JavaFX включает инструмент JavaFX Scene Builder для визуальной компоновки GUI-компонентов в GUI-интерфейс на основе языка FXML.
JavaFX обеспечивает изменение внешнего вида GUI-компонентов с использованием CSS.
JavaFX обеспечивает встраивание HTML-контента в JavaFX-приложение с помощью компонента WebView с возможностью выполнения Javascript-кода и редактирование HTML-контента с помощью компонента HTMLEditor.
JavaFX обеспечивает интеграцию с библиотеками Swing и SWT.
JavaFX обеспечивает создание красочных и насыщенных отчетов с диаграммами данных.
JavaFX предоставляет богатый набор компонентов и компоновок компонентов для создания GUI-интерфейса.
JavaFX обеспечивает встраивание аудио и видео контента в JavaFX-приложение с помощью компонентов MediaView и AudioClip.
JavaFX обеспечивает отображение 2D и 3D графики с добавлением визуальных эффектов, трансформаций и анимации.
JavaFX обеспечивает создание изображений 2D-графики из простых геометрических форм, из существующих изображений и текста с помощью Canvas API.
JavaFX обеспечивает поддержку Rich Text с помощью пакета javafx.scene. text.
JavaFX обеспечивает использование визуальных эффектов, камеры, источников света, трансформаций и анимации.
JavaFX позволяет печать узла графа JavaFX сцены с помощью Printing API.
JavaFX обеспечивает связывание данных.
JavaFX позволяет выполнение фоновых задач.
JavaFX позволяет разделение сцены на подсцены с помощью SubScene API.
Архитектура платформы JavaFX
Так как платформа JavaFX обеспечивает 2D/3D графические, медиа и анимационные возможности для приложений, технология JavaFX оперирует терминологией и понятиями компьютерной графики.
Компьютерная графика – создание и отображение данных изображения компьютером с помощью программного обеспечения и компьютерного оборудования.
Существуют различные виды компьютерной графики.
Это 2D-графика – создание цифровых изображений из двухмерных геометрических моделей.
Растровая графика – это представление цифрового изображения в виде сетки пикселей.
Векторная графика – это представление цифрового изображения в виде математических формул, описывающих изображение как набор геометрических примитивов.
И наконец 3D-графика – создание цифровых изображений из трехмерного представления геометрических данных.
Рендеринг (rendering) – это процесс генерации растрового изображения из модели (model) или сцены (scene) с сопутствующими эффектами.
Одним из быстрых методов рендеринга является растеризация (rasterisation) – геометрическое проецирование моделей на плоскость изображения с генерацией растрового изображения.
Рендеринг, основанный на растеризации, выполняется по графическому конвейеру (graphics pipeline).
Графический конвейер представляет собой стадии процесса рендеринга, основанного на растеризации, и может быть разделен на три этапа – тесселяция, геометрическая обработка, и растеризация.
Тесселяция (tessellation) – процесс разбиения поверхности модели на полигоны, он производится программным обеспечением без аппаратного ускорения.
Геометрическая обработка – это трансформация, отсечение, освещение, проецирование и предварительная обработка, производится, как правило, программным обеспечением до фазы предварительной обработки, которая частично или полностью осуществляется на аппаратном уровне.
Растеризация – это конвертация двухмерного представления сцены в растровое изображение, выполняется на аппаратном уровне видео картой.
Наиболее распространенные технологии графического конвейера – это библиотеки OpenGL и Direct3D.
Модель – это описание или набор данных, представляющий форму объекта.
В JavaFX-технологии модель представлена экземпляром класса GUI-компонента.
Сцена – это скомпонованный в рабочей области набор моделей и объектов, вызывающих различные эффекты, например, источник света и камера, которые создают эффекты освещенности и перспективы.
Модели внутри сцены характеризуются размером и взаимным расположением.
Полигон (polygon) – замкнутая фигура, созданная путем соединения отрезков, где каждый конец отрезка соединяется только с одним концом двух других отрезков (треугольник, прямоугольник, окружность и т.д.). Отрезки называются краями или сторонами (edges или sides), а точки соединения отрезков – вершинами (vertices).
Растровое изображение модели, интегрированное в сцену, называется спрайтом (sprite).
Такой рендеринг называется предварительным (pre-rendering) – когда используются предварительно сгенерированные изображения моделей перед отображением всей сцены в реальном времени.
Граф сцены (scene graph) – это структура данных, коллекция узлов (node) дерева, которая упорядочивает логическую структуру сцены.
Компьютерная анимация – это быстрый показ последовательности изображений, созданных с помощью компьютерной графики, для создания иллюзии движения.
В технологии JavaFX используется два вида анимации – анимация по ключевым кадрам, когда разработчик расставляет ключевые кадры на временной шкале, а промежуточные кадры автоматически генерируются программным обеспечением, и это программируемая анимация, когда движение отдельных объектов программируется.
Ключевой кадр (key frame) – указывает значение свойства в определенное время в период выполнения анимации.
Анимация создается с помощью изменения таких свойств объектов как размер, положение, цвет и т. д.
С помощью ключевых кадров задаются значения свойств на временной шкале, а программное обеспечение само генерирует плавные переходы между ключевыми кадрами.
Материал – это информация о характеристиках поверхности 3D-объекта – цвет, отражающая/преломляющая способность и др.
Mesh – это набор вершин и многоугольников, определяющих форму 3D-объекта.
Back-face culling – отключение отображения невидимых поверхностей.
В то время как библиотеки AWT/Swing и SWT оперируют окнами, в которых размещаются компоненты интерфейса согласно компоновкам, компоненты графического интерфейса пользователя JavaFX-приложения образуют сцену, логическая структура
- C# для профессионалов. Том II - Симон Робинсон - Программирование
- Как спроектировать современный сайт - Чои Вин - Программирование
- Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2 - Александр Фролов - Программирование
- Программирование на Java - Н.А. Вязовик - Программирование
- ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ. РУКОВОДСТВО ПО УПРАВЛЕНИЮ ДОКУМЕНТИРОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ - ГОССТАНДАРТ РОССИИ - Программирование
- Каждому проекту своя методология - Алистэр Коуберн - Программирование
- Сделай видеоигру один и не свихнись - Слава Грис - Программирование / Руководства
- Как почистить сканы книг и сделать книгу - IvanStorogev? KpNemo - Программирование